
// ignore_for_file: prefer_interpolation_to_compose_strings

void main(List<String> arguments) {
  test1();
  test2();
  test3();
}

void test1(){



  //1.json语法抄过来

  // 创建Map
  var language = {'fisrt': 'dart', 'second': 'java'};

  // 创建不可变的 Map
  var constLanguage = const {'fisrt': 'dart', 'second': 'java'};

  // 通过构造器创建
  var initLanguage = {};
  // var list = [];
  // var set = <dynamic>{};


  language.forEach((key, value) {
    print("map----"+key+' : '+value);
  });


  //forin循环输出数据
  for(var item in constLanguage.values){
    print("----"+item);
  }

}
void test2(){

  // 创建Map
  var map = {'fisrt': 'dart', 'second': 'java'};

  // 获取长度
  print(map.length);    // 输出结果：2

  // 判断是否为空
  print(map.isEmpty);     // 输出结果：false
  print(map.isNotEmpty);  // 输出结果：true

  // 获取到所有的 key
  print(map.keys);        // 输出结果：(fisrt, second)

  // 获取到所有的 values
  print(map.values);      // 输出结果：(dart, java)

  // 判断是否包含某个key
  print(map.containsKey("key"));    // 输出结果：false

  // 判断是否包含某个value
  print(map.containsValue("key"));    // 输出结果：false

  // 添加一个新的元素进去，兼容了数组的语法方案  js
  // js 面向对象方案 node.js---> vue
  map['third'] = 'key';
  print(map);         // 输出结果：{fisrt: dart, second: java, third: key}

  // 循环打印 代码提示：Map.forEach((String, String) → void f) → void
  map.forEach( (key, value) =>  getMap(key, value) );
}

void getMap(key, value){
  print("key:$key, value:$value");
}


void test3() {
  var list2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

  //如果所有的数据都满足条件的就返回true，否则返回false
  var f = list2.every((value) {
    return value > 0;
  });
  print(f); // true

  //如果所有的数据至少有一项满足条件就返回true，否则返回false
  var f2 = list2.any((value) {
    return value > 10;
  });
  print(f2); // false

  //循环遍历，输出满足条件的数据
  var newList5 = list2.where((value) {
    return value > 5;
  });
  print(newList5.toList()); //[6, 7, 8, 9, 10]

  //集合进阶
  List list3 = [
    {
      'province': '河北',
      'city': ['石家庄', '廊坊', '辛集'],
    },
    {
      'province': '北京',
      'city': ['朝阳区', '海淀区', '昌平区'],
    },
    {
      'province': '山东',
      'city': ['青岛', '淄博', '济南'],
    }
  ];

  for (int i = 0; i < list3.length; i++) {
    print(list3[i]);
  }


  for (int i = 0; i < list3.length; i++) {
    print(list3[i]['province'] + " ");

    for (int j = 0; j < list3[i]['city'].length; j++) {
      print("   " + list3[i]['city'][j]);
    }
  }
}